Alexa for Business プライベートスキルを作ってみました #reinvent #Alexa
1 はじめに
Alexa for Businessでは、新しくプライベートスキルというスキルが作れるようになりました。
スキル管理API(SMAPI)とAlexa スキルキットコマンドラインインターフェイス(ASK CLI)を使用して、配信モードをプライベートに設定し、公開後、AWSアカウントに配布することでAlexa for Businessから利用可能になります。
と言うことで、早速作ってみました。
ちなみに、Live(公開状態)とするために、申請が必要ですが、通常の場合と違い、約1時間でLiveとなっていました。
なお、ASK CLIの使い方については、ここでは省略させて頂きます。不明の場合は、下記をご参照ください。
今回使用したASK-CLIのバージョンは、下記のとおりでした。 Version 1.0.0では、配布のコマンドが使えませんでしたのでご注意ください。
$ ask --version 1.0.0-beta.7
2 手順
プライベートスキルを作成し、利用を開始する手順は、以下のとおりです。
- 配信モードをプライベートに設定
- 申請
- 組織への配布
- 利用(Enable)
以下、各手順について紹介させて頂きます。
3 配信モードをプライベートに設定
開発段階のスキルのマニフェストで配信モードをプライベートに設定します。マニフェストは、ASK CLIでダウンロードして、編集後、アップロードします。(開発者コンソールでは作業できません)
ASK-CLIでマニュフェストをダウンロードするには、下記のコマンドを使用します。
$ ask api get-skill -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name > private-skill-sample.json
ダウンロードしたマニフェストの、publishingInformationにdistributionModeを追加します。
{ "skillManifest": { "publishingInformation": { "locales": { "en-US": { "name": "Private Skill Sample", "smallIconUri": "https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.xxxxxxx", "largeIconUri": "https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.xxxxxxx" } }, "isAvailableWorldwide": true, "distributionCountries": [], "distributionMode": "PRIVATE" }, "apis": { "custom": { "endpoint": { "uri": "arn:aws:lambda:us-east-1:xxxxxxxx:function:private-skill-sample_skill" } } }, "manifestVersion": "1.0" } }
編集後、マニフェストを更新します。
$ ask api update-skill -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name -f private-skill-sample.json Skill updated successfully.
4 申請
申請は、次のコマンドを使用します。(申請は、開発者コンソールからでも可能です)
$ ask api submit -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name
申請前にdevelopmentとなっているステータスは、申請後、Certificationに変わります。
申請後、Liveになるまでには、「最大2時間かかる場合がある」とドキュメントに記載されています。
なお、申請時には、通常の申請と同じく、全ての必須入力項目を埋める必要があります。いくつかが未設定の場合、次のようにエラーとなります。
$ ask api submit -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name Call submit error. Error code: 400 { "message": "Invalid skill for submission", "violations": [ { "message": "Export compliance must not be null" }, { "message": "UsePersonalInfo must not be null" }, { "message": "IsChildDirected must not be null" }, { "message": "Skill summary must not be empty" }, { "message": "Testing Instructions must not be null" }, { "message": "CategoryItemtypeKeyword must not be empty" }, { "message": "Skill description must not be empty" }, { "message": "Example phrases must be between 1 and 3" }, { "message": "AllowPurchases must not be null" } ] }
申請が正常に行われると、Skill submitted successfully. が表示されます。
$ ask api submit -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name Skill submitted successfully.
5 組織への配布
ライブステージでスキルが利用可能になったら、それを1つ以上のAlexa for Business組織に配布します。
配布は、下記のコマンド行いますが、配布先は、AWSアカウントのARNで指定します。
$ ask api add-private-distribution-account -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live --account-id arn:aws:iam::xxxxxxxxxxxx:root -p profile-name Private distribution account added successfully.
当該スキルがLiveになっていない場合、リソースが見つからないということでエラーとなります。
$ ask api add-private-distribution-account -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live --account-id arn:aws:iam::xxxxxxxxxxxx:root -p profile-name Call add-private-distribution-account error. Error code: 404 { "message": "Resource not found." }
なお、スキルの配布状況は、下記の要領で確認できます。
$ ask api list-private-distribution-accounts -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live -p profile-name { "accounts": [ { "acceptStatus": "PENDING", "id": "arn:aws:iam::xxxxxxxxxxxx:root" } ] }
また、配布を止める要領は次のとおりです。
$ ask api delete-private-distribution-account -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live --account-id arn:aws:iam::xxxxxxxxxxxx:root -p profile-name Private distribution account deleted successfully.
6 利用(Enable)
組織に配布されたプライベートスキルは、AWSコンソールのAlexa for Businessサービスで、Skills > Private skillsに一覧されます。
ここで、Reviewをボタンから、有効にすることで、Enables skillsに追加されます。
7 最後に
今回は、Alexa for Businessで新しく追加されたプライベートスキルを試してみました。
Liveとなるのに1時間程度は必要ですが、通常の申請のように数日かかることはありません。また、特定のAWSアカウントに対して配布ができるので、企業内で使用する専用スキルを作るには、非常に適したスキルと言えそうです。
プライベートユースだった、今までのスキルとは、まったく違う、新しい分野への展開を非常に強く感じました。